package com.hruiworks.campusgroup.service;

import com.hruiworks.campusgroup.common.PageVO;
import com.hruiworks.campusgroup.manager.entity.GroupFullInfo;
import com.hruiworks.campusgroup.pojo.entity.Group;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hruiworks.campusgroup.pojo.entity.User;
import com.hruiworks.campusgroup.pojo.query.GroupPageQuery;
import com.hruiworks.campusgroup.pojo.request.GroupCreateRequest;
import com.hruiworks.campusgroup.pojo.vo.GroupVO;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @author 10240
 * @description 针对表【group(团队表)】的数据库操作Service
 * @createDate 2025-03-07 09:28:24
 */
public interface GroupService extends IService<Group> {

    /**
     * 创建团队
     *
     * @param user 当前用户
     * @return 返回团队id
     */
    Long createGroup(GroupCreateRequest groupCreateRequest, User user);

    /**
     * 加入团队
     *
     * @param user    当前用户
     * @param groupId 团队id
     * @return 返回加入是否成功
     */
    Boolean joinGroup(User user, Long groupId);

    /**
     * 分页查询group
     *
     * @param groupPageQuery 查询条件
     * @return 团队信息
     */
    PageVO<Group> listGroupPage(GroupPageQuery groupPageQuery);

    /**
     * 分页查询group主页
     * 额外限制，团队列表中不出现自己已经加入、创建、过期的队伍
     *
     * @param groupPageQuery 查询条件
     * @return 团队信息
     */
    PageVO<Group> listGroupPageMain(GroupPageQuery groupPageQuery, User user);

    /**
     * 个人参加的团队信息
     *
     * @param size    单页大小
     * @param current 当前页，注意其实索引的转换[起始索引=(查询页码-1) * 每页显示记录数]
     * @param created 1表示全部数据，2表示用户创建的，3表示用户加入的
     * @param time    1表示全部数据，2表示待开始，3表示进行中，4表示已结束
     * @param user  当前的用户
     * @return Group分页信息
     */
    PageVO<GroupFullInfo> listGroupPageSelf(Long size, Long current, Integer created, Integer time, User user);

    /**
     * 修改活动开始时间提醒
     *
     * @param user 用户
     * @param groupId 活动id
     * @param timeBeforehand 提前时间 / 以分钟为单位
     */
    void changeGroupStartNotice(User user, Long groupId, Long timeBeforehand);


}
